package com.woniu.outpatient.service.impl;

import java.util.List;

import com.woniu.outpatient.domain.Drug;
import com.woniu.outpatient.mapper.DrugMapper;
import com.woniu.outpatient.vo.DrugListVO;
import com.woniu.vo.ZhaiVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.woniu.outpatient.mapper.DruglistMapper;
import com.woniu.outpatient.domain.Druglist;
import com.woniu.outpatient.service.IDruglistService;
import org.springframework.transaction.annotation.Transactional;

/**
 * 药单详情表Service业务层处理
 *
 * @author wolf-six
 * @date 2023-02-15
 */
@Service
@Transactional
public class DruglistServiceImpl implements IDruglistService
{
    @Autowired
    private DruglistMapper druglistMapper;

    @Autowired
    private DrugMapper drugMapper;

    /**
     * 查询药单详情表
     *
     * @param druglistId 药单详情表主键
     * @return 药单详情表
     */
    @Override
    public Druglist selectDruglistByDruglistId(Long druglistId)
    {
        return druglistMapper.selectDruglistByDruglistId(druglistId);
    }

    /**
     * 查询药单详情表列表
     *
     * @param druglist 药单详情表
     * @return 药单详情表
     */
    @Override
    public List<Druglist> selectDruglistList(Druglist druglist)
    {
        return druglistMapper.selectDruglistList(druglist);
    }

    @Override
    public List<DrugListVO> selectAllDruglistList() {
        return druglistMapper.selectAllDruglistList();
    }

    /**
     * 新增药单详情表
     *
     * @param druglist 药单详情表
     * @return 结果
     */
    @Override
    public int insertDruglist(Druglist druglist)
    {
        Long drugId = druglist.getDrugId();
        Drug drug = drugMapper.selectDrugByDrugId(drugId);
        Long druglistNum = druglist.getDruglistNum();
        if (drug.getDrugCount() >= druglistNum) {
            drug.setDrugCount(drug.getDrugCount() - druglistNum);
            drugMapper.updateDrug(drug);
            return druglistMapper.insertDruglist(druglist);
        }
        return 0;
    }

    /**
     * 修改药单详情表
     *
     * @param druglist 药单详情表
     * @return 结果
     */
    @Override
    public int updateDruglist(Druglist druglist)
    {
        return druglistMapper.updateDruglist(druglist);
    }

    @Override
    public List<ZhaiVO> selDrugPriceAndDrugNum(Long prescriptionId) {
        return druglistMapper.selDrugPriceAndDrugNum(prescriptionId);
    }

    /**
     * 批量删除药单详情表
     *
     * @param druglistIds 需要删除的药单详情表主键
     * @return 结果
     */
    @Override
    public int deleteDruglistByDruglistIds(Long[] druglistIds)
    {
        return druglistMapper.deleteDruglistByDruglistIds(druglistIds);
    }

    /**
     * 删除药单详情表信息
     *
     * @param druglistId 药单详情表主键
     * @return 结果
     */
    @Override
    public int deleteDruglistByDruglistId(Long druglistId)
    {
        return druglistMapper.deleteDruglistByDruglistId(druglistId);
    }
}
